

function p(JU, Js) {
    return JU["protocol"] + '//' + JU["host"] + JU["pathname"] + JU["search"] + (Js ? '' : JU["hash"]);
}

function sig(Jd) {
    for (var JP = 0, JB = encodeURIComponent(Jd), Jb = 0; Jb < JB["length"]; Jb++)
        JP = (JP << 7) - JP + 398 + JB["charCodeAt"](Jb),
        JP |= 0;
    return JP;
}

function uu(Jd, JP, JB) {
    if (null == Jd)
        return '';
    for (var Jb, Ju, JE, JL, Jp = {}, Jv = {}, Jc = '', JD = 2, JG = 3, JN = 2, JO = [], Jw = 0, Ja = 0, Jg = 0; Jg < Jd["length"]; Jg += 1)
        if (JE = Jd["charAt"](Jg),
        Object["prototype"]["hasOwnProperty"]["call"](Jp, JE) || (Jp[JE] = JG++,
        Jv[JE] = !0),
        JL = Jc + JE,
        Object["prototype"]["hasOwnProperty"]["call"](Jp, JL))
            Jc = JL;
        else {
            if (Object["prototype"]["hasOwnProperty"]["call"](Jv, Jc)) {
                if (Jc["charCodeAt"](0) < 256) {
                    for (Jb = 0; Jb < JN; Jb++)
                        Jw <<= 1,
                        Ja == JP - 1 ? (Ja = 0,
                        JO["push"](JB(Jw)),
                        Jw = 0) : Ja++;
                    for (Ju = Jc["charCodeAt"](0),
                    Jb = 0; Jb < 8; Jb++)
                        Jw = Jw << 1 | 1 & Ju,
                        Ja == JP - 1 ? (Ja = 0,
                        JO["push"](JB(Jw)),
                        Jw = 0) : Ja++,
                        Ju >>= 1;
                } else {
                    for (Ju = 1,
                    Jb = 0; Jb < JN; Jb++)
                        Jw = Jw << 1 | Ju,
                        Ja == JP - 1 ? (Ja = 0,
                        JO["push"](JB(Jw)),
                        Jw = 0) : Ja++,
                        Ju = 0;
                    for (Ju = Jc["charCodeAt"](0),
                    Jb = 0; Jb < 16; Jb++)
                        Jw = Jw << 1 | 1 & Ju,
                        Ja == JP - 1 ? (Ja = 0,
                        JO["push"](JB(Jw)),
                        Jw = 0) : Ja++,
                        Ju >>= 1;
                }
                0 == --JD && (JD = Math["pow"](2, JN),
                JN++),
                delete Jv[Jc];
            } else {
                for (Ju = Jp[Jc],
                Jb = 0; Jb < JN; Jb++)
                    Jw = Jw << 1 | 1 & Ju,
                    Ja == JP - 1 ? (Ja = 0,
                    JO["push"](JB(Jw)),
                    Jw = 0) : Ja++,
                    Ju >>= 1;
            }
            0 == --JD && (JD = Math["pow"](2, JN),
            JN++),
            Jp[JL] = JG++,
            Jc = String(JE);
        }
    if ('' !== Jc) {
        if (Object["prototype"]["hasOwnProperty"]["call"](Jv, Jc)) {
            if (Jc["charCodeAt"](0) < 256) {
                for (Jb = 0; Jb < JN; Jb++)
                    Jw <<= 1,
                    Ja == JP - 1 ? (Ja = 0,
                    JO["push"](JB(Jw)),
                    Jw = 0) : Ja++;
                for (Ju = Jc["charCodeAt"](0),
                Jb = 0; Jb < 8; Jb++)
                    Jw = Jw << 1 | 1 & Ju,
                    Ja == JP - 1 ? (Ja = 0,
                    JO["push"](JB(Jw)),
                    Jw = 0) : Ja++,
                    Ju >>= 1;
            } else {
                for (Ju = 1,
                Jb = 0; Jb < JN; Jb++)
                    Jw = Jw << 1 | Ju,
                    Ja == JP - 1 ? (Ja = 0,
                    JO["push"](JB(Jw)),
                    Jw = 0) : Ja++,
                    Ju = 0;
                for (Ju = Jc["charCodeAt"](0),
                Jb = 0; Jb < 16; Jb++)
                    Jw = Jw << 1 | 1 & Ju,
                    Ja == JP - 1 ? (Ja = 0,
                    JO["push"](JB(Jw)),
                    Jw = 0) : Ja++,
                    Ju >>= 1;
            }
            0 == --JD && (JD = Math["pow"](2, JN),
            JN++),
            delete Jv[Jc];
        } else {
            for (Ju = Jp[Jc],
            Jb = 0; Jb < JN; Jb++)
                Jw = Jw << 1 | 1 & Ju,
                Ja == JP - 1 ? (Ja = 0,
                JO["push"](JB(Jw)),
                Jw = 0) : Ja++,
                Ju >>= 1;
        }
        0 == --JD && (JD = Math["pow"](2, JN),
        JN++);
    }
    for (Ju = 2,
    Jb = 0; Jb < JN; Jb++)
        Jw = Jw << 1 | 1 & Ju,
        Ja == JP - 1 ? (Ja = 0,
        JO["push"](JB(Jw)),
        Jw = 0) : Ja++,
        Ju >>= 1;
    for (; ; ) {
        if (Jw <<= 1,
        Ja == JP - 1) {
            JO["push"](JB(Jw));
            break;
        }
        Ja++;
    }
    return JO["join"]('');
}

function ua(Jd, JP) {
    var JE = {};
    JE["HdXfE"] = "DGi0YA7BemWnQjCl4+bR3f8SKIF9tUz/xhr2oEOgPpac=61ZqwTudLkM5vHyNXsVJ";
    var JL = JE;
    if (null == Jd)
        return '';
    var Ju = uu(Jd, 6, function(Jp) {
        return JL["HdXfE"]["charAt"](Jp);
    });
    if (JP)
        return Ju;
    switch (Ju["length"] % 4) {
    default:
    case 0:
        return Ju;
    case 1:
        return Ju + "===";
    case 2:
        return Ju + '==';
    case 3:
        return Ju + '=';
    }
}

Jt = [
    "type__",
    "refer__",
    "ipcity__",
    "md5__",
    "decode__",
    "encode__",
    "time__",
    "timestamp__",
    "type__"
]

function L(JU, Js) {
    if (0 != Object["keys"](Js)["length"]) {
        var Jd, JP = '';
        for (Jd in Js)
            JP += encodeURIComponent(Jd) + '=' + encodeURIComponent(Js[Jd]) + '&';
        if (JP = JP["slice"](0, JP["length"] - 1),
        0 == JU["length"])
            JU = '?' + JP;
        else {
            for (var JB = JU["slice"](1)["split"]('&'), Jb = [], Ju = Object["keys"](Js), JE = 0; JE < JB["length"]; JE++)
                Jd = decodeURIComponent(JB[JE]["split"]('=', 1)[0]),
                -1 == Ju["indexOf"](Jd) && Jb["push"](JB[JE]);
            JU = '?' + (0 == Jb["length"] ? '' : Jb["join"]('&') + '&') + JP;
        }
    }
    return JU;
}

function JF_p(JU, Js) {
    return JU["protocol"] + '//' + JU["host"] + JU["pathname"] + JU["search"] + (Js ? '' : JU["hash"]);
}

function main(Jd, JP) {
    var Ju = p(Jd, !0);
    JP && (Ju += JP);
    for (var JP = sig(Ju) + '|' + "" + '|' + new Date()["getTime"]() + '|1', Ju = ua(JP, !0), JE = 0, JL = 0; JL < Jd["host"]["length"]; JL++)
        JE += Jd["host"][JL]["charCodeAt"]();
    JP = {};
    return JP[Jt[JE % Jt["length"]] + JE % 10000] = Ju
}

// new Date()["getTime"]()

// Date.prototype.getTime = function (){ return 1745301824608}

Jd = {
    "protocol": "https:",
    "host": "ctbpsp.com",
    "hostname": "ctbpsp.com",
    "port": "",
    "pathname": "/cutominfoapi/searchkeyword",
    "search": "?keyword=11&uid=0&PageSize=10&CurrentPage=1&searchType=0&bulletinType=5",
    "hash": ""
}

console.log(main(Jd, null))